package com.example.kotlindemo.title_utils

/**
 * @author Lmy
 * @功能: Kotlin弱化了静态类的使用
 * 这里简单编写了Kotlin的单例模式 只需要使用object来修饰类即可
 * @Creat 2020/5/13 22:02
 * @Compony 永远相信美好的事物即将发生
 */
//object Danli {
//    fun doAction() {
//        print("这是一个Kotlin单例类")
//    }
//
//    fun Test(string: String) {
//        print("$string")
//    }
//}

/**
 * 如果你希望只是一个类中的某一个方法变成单例模式
 * 则可以以下这样写法
 */
class Danli {

    fun test(string: String) {
        print("$string")
    }

    /**
     * companion object关键字实际上会再Danli类中创建一个伴生类
     * 这种只是在语法形式上模拟了静态方法
     *
     * 有两种方式创建真正的静态方法 采用注解  @JvmStatic 或者顶层方法(就是创建一个kt文件中直接定义的所有的fun顶层方法)
     *
     * 所有的顶层方法再kotlin代码中可以被任意调用无需管包名类名
     */
    companion object {
        fun danli(name: String) {
            print("$name")
        }

        /**
         * 使用注解真正创建一个静态方法
         * @JvmStatic 只能加在companion object中 普通方法会提示语法错误
         */
        @JvmStatic
        fun danli2(name: String) {
            print("$name")
        }
    }

}